package com.iot.common.utils;

public class NumberUtil {

    /**
     * 获取随机数
     *
     * @param bits 几位数
     * @return
     */
    public static int getRandomCodeByBit(int bits) {
        int r = (int) (Math.random() * (Math.pow(10, bits)));
        if (r < (Math.pow(10, bits - 1))) {
            r += (Math.pow(10, bits - 1));
        }
        return r;
    }

    /**
     * 判断数组字符串中是否包含某值
     *
     * @param arrStr
     * @param value
     * @param regex
     * @return
     */
    public static boolean isValueInArrayString(String arrStr, Object value, String regex) {
        String[] valStrArr = arrStr.split(regex);
        for (String valStr : valStrArr) {
            if (valStr.equals("" + value)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 向一个数组字符串追加一个值
     *
     * @param arrStr //原始数组字符串
     * @param value //要加入的值，类型不限，但别搞骚操作
     * @param regex //原始字符串中的分隔符
     * @return
     */
    public static String addValueToArrayString(String arrStr, Object value, String regex) {
        String[] valStrArr = arrStr.split(regex);
        for (String valStr : valStrArr) {
            if (valStr.equals("" + value)) {
                return arrStr;
            }
        }
        if (arrStr.length() == 0) {
            arrStr += ("" + value);
        } else {
            arrStr += ("," + value);
        }
        return arrStr;
    }

    /**
     * 从一个数组字符串中移除一个值
     *
     * @param arrStr
     * @param value
     * @param regex
     * @return
     */
    public static String removeValueFromArrayString(String arrStr, Object value, String regex) {
        String[] valStrArr = arrStr.split(regex);
        String newStr = "";
        for (String valStr : valStrArr) {
            if (!valStr.equals("" + value)) {
                newStr += (valStr + regex);
            }
        }
        try {
            newStr = newStr.substring(0, newStr.length() - 1);
        } catch (Exception e) {
            newStr = "";
        }
        return newStr;
    }

    /**
     * 将数据表中查出的数组字符串，转成查询中的多选条件 例：当regex=",",key="id"时，将 "1,3,2,5" 转换成 "id=1 OR
     * id=3 OR id=2 OR id=5" *
     *
     * @param valueArrStr 原始字符串
     * @param regex 分割符
     * @param key 多选条件的key
     * @return
     */
    public static String arrayStringToTableSelectCondition(String valueArrStr, String regex, String key) {
        String condition = "";
        String[] valueArr = valueArrStr.split(regex);
        for (String value : valueArr) {
            if (value.length() > 0) {
                condition += (" " + key + "=" + value + "   OR");
            }
        }
        if (condition.length() < 4) {
            return "";
        }
        condition = condition.substring(0, condition.length() - 3);
        return condition;
    }

}
